package com.example.demo.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 字符串工具类
 * @author dxw
 */
public class MyStringUtils {
    
    /**
     * 将驼峰命名的字符串拆分成单词列表
     * 例如：codeEase -> [code, Ease]
     *      CodeEase -> [Code, Ease]
     *      code_ease -> [code, ease]
     * 
     * @param input 输入字符串
     * @return 拆分后的单词列表
     */
    public static List<String> splitCamelCase(String input) {
        List<String> result = new ArrayList<>();
        
        if (input == null || input.isEmpty()) {
            return result;
        }
        
        // 正则表达式：
        // (?<=[a-z])(?=[A-Z]) - 小写字母后跟大写字母的位置
        // (?<=[A-Z])(?=[A-Z][a-z]) - 连续大写字母中，最后一个大写字母前的位置（处理 XMLParser -> XML Parser）
        Pattern pattern = Pattern.compile("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])");
        String[] words = pattern.split(input);
        
        for (String word : words) {
            if (!word.isEmpty()) {
                result.add(word);
            }
        }
        
        // 如果没有拆分成功（说明不是驼峰命名），直接返回原字符串
        if (result.isEmpty()) {
            result.add(input);
        }
        
        return result;
    }
}

